package logic

import (
	"CampusCloudAid/dao/mysql"
	"CampusCloudAid/models"
)

func CreateWorkOrders(p *models.CreateWorkOrders) (err error) {
	// 创建一个id
	//Uid, err := snowflake.GetID()
	//if err != nil {
	//	zap.L().Error("generation UID failed", zap.Error(err))
	//	return
	//}

	T, _ := mysql.GetTask(p.TaskId)
	// 根据任务的原状态调用不同的处理方法
	switch T.TaskStatus {
	case "已接收":
		err := mysql.IncreaseFrozenMoney(T.ReceiverId, T.PaymentFee)
		if err != nil {
			return err
		}
		// 调用任务异常处理钱包变化的方法
		//err = mysql.TaskAbnormalMoney(T.ReceiverId, T.PublisherId, T.PaymentFee, p.Status)
		//if err != nil {
		//	return err
		//}
	case "已提交，待确认":
		// 先执行钱变成已冻结金额
		// 接单人待提现金额=原待提现金额-任务金额
		// 接单人已冻结金额=原已冻结金额+任务金额
		err = mysql.UpdateReceiverBalance(T.ReceiverId, T.PaymentFee)
		if err != nil {
			return err
		}

		// 再调用处理任务异常的方法
		//err = TaskAbnormalMoney(p.ReceiverId, p.PublisherId, p.TaskAmount, p.Status)
		//if err != nil {
		//	return err
		//}
	}

	// 将新建的工单结构体放入数据库
	if err = mysql.CreateWorkOrders(p); err != nil {
		return err
	}
	//修改订单的状态为异常
	task := &models.Tasks{
		TaskStatus: "异常",
	}
	if err = mysql.ReceiveTasks(int(p.TaskId), task); err != nil {
		return err
	}
	return
}

func ModifyWorkOrder(orderID int64, newStatus string) error { //修改工单状态
	// 更新工单状态
	err := mysql.ModifyWorkOrder(orderID, newStatus)
	if err != nil {
		return err
	}
	return nil
}
